import nProgress from 'nprogress'
import router from './router'
import 'nprogress/nprogress.css'
import store from './store'
const whiteList = ['/login', '/404']
// 前置守卫
router.beforeEach(async(to, from, next) => {
  // 开启进度条
  nProgress.start()
  // 这里判断有没有token，需要引入store用getters
  if (store.getters.token) {
    // 有token且要去登录页
    if (to.path === '/login') {
      // 跳转到主页，因为有token代表登录过了，所以不允许再去登录页
      next('/')
      // next中转地址的情况下 不会走后置守卫  关闭进度条
      nProgress.done()
    } else {
      // 这里获取用户资料 不是每次都获取
      // 当前没有用户资料的时候获取 => Vuex(全局) => 有没有用户资料
      if (!store.getters.id) {
        // 获取用户资料
        await store.dispatch('user/getUserInfo')
      }
      next()
    }
  } else { // 这里是没有token的else
    // 判断是否在白名单中
    if (whiteList.includes(to.path)) {
      // 在白名单中,即没有token也允许访问的页面
      next()
    } else {
      // 不在白名单中，跳转到登录
      next('/login')
      nProgress.done()
    }
  }
})
// 后置守卫，当前置守卫next时才会进后置守卫
router.afterEach((to, from, next) => {
  // 关闭进度条
  nProgress.done()
})
